﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using CapaPresentacion.Commands;
using CapaPresentacion.Vistas;
using Entidades;
using CapaLogica;
using System.Windows.Input;
using System.Windows;
using System.Windows.Data;
using System.Transactions;

namespace CapaPresentacion.Vistas
{
    class VentanaBusquedaActividadDidacticaViewModel
    {


        public event EditarEntidad EditarEntidad;

        private RelayCommand findCommand;
        private RelayCommand editCommand;
        private RelayCommand eliminarActividadCommand;
        private string nombre;
        private Guid idSeleccionado;

        private VentanaBusquedaActividadDidactica view;

        public List<ViewEntity> ListaActividades{ get; set; }


        public string Nombre
        {
            get { return nombre; }
            set { nombre = value; }

        }

        public Guid IdSeleccionado
        {
            get { return idSeleccionado; }
            set { idSeleccionado = value; }

        }

        public ICommand FindCommand
        {
            get
            {
                return findCommand;
            }
        }

        public ICommand EditCommand
        {
            get
            {
                return editCommand;
            }
        }

        public ICommand EliminarActividadCommand
        {
            get
            {
                return eliminarActividadCommand;
            }
        }

        
        public VentanaBusquedaActividadDidacticaViewModel() {}

        public VentanaBusquedaActividadDidacticaViewModel(VentanaBusquedaActividadDidactica vista)
        {
            this.view = vista;
            this.findCommand = new RelayCommand(BuscarActividadDidactica);
            this.editCommand = new RelayCommand(EditarActividadDidactica);

        }

        public VentanaBusquedaActividadDidacticaViewModel(VentanaBusquedaActividadDidactica vista, string eliminada)
        {
            this.view = vista;
            this.findCommand = new RelayCommand(BuscarActividadDidactica);
            this.eliminarActividadCommand = new RelayCommand(EliminarActividadDidactica);
            this.view.btnEditar.Visibility = Visibility.Collapsed;
            this.view.btnEliminar.Visibility = Visibility.Visible;
            this.view.titulo.Content = "Eliminar Actividad Didáctica";

        }

        private void BuscarActividadDidactica(Object parameter)
        {

            if (nombre == null || nombre == "")
            {
                VentanaAviso nueva = new VentanaAviso(true, "Se ha producido un error", "El campo 'Nombre de la actividad didáctica' no puede estar vacío");
                nueva.ShowDialog();

            }
            else
            {
                view.Cursor = Cursors.Wait;
                ListaActividades = new ActividadDidacticaLogica().ObtenerCoincidenciasPorNombre(nombre);

                if (ListaActividades != null && ListaActividades.Count > 0)
                {
                    this.view.listaDatos.ItemsSource = ListaActividades;
                    this.view.panelResultados.Visibility = Visibility.Visible;
                    this.view.lblActividadDidacticaNoRecords.Visibility = Visibility.Collapsed;
                    this.view.lblActividadNoSelected.Visibility = Visibility.Collapsed;                 
                }
                else
                {
                    this.view.panelResultados.Visibility = Visibility.Collapsed;
                    this.view.lblActividadDidacticaNoRecords.Visibility = Visibility.Visible;
                    
                }
                view.Cursor = Cursors.Arrow;
            }


        }

        public void EditarActividadDidactica(Object parameter)
        {

            try
            {
                if (this.idSeleccionado != Guid.Empty)
                {
                    this.view.lblActividadNoSelected.Visibility = Visibility.Collapsed;

                    ActividadDidactica entidad = new ActividadDidacticaLogica().ObtenerEntidadParaEditar(idSeleccionado);
                    this.EditarEntidad(CasosDeUso.NuevaActividadDidactica, entidad);
                    this.view.Close();

                }
                else
                {
                    this.view.lblActividadNoSelected.Visibility = Visibility.Visible;
                }
            }
            catch (Exception)
            {

                VentanaAviso nueva = new VentanaAviso(true, "Se ha producido un error", "  Ha ocurrido un error y la actividad didáctica no se ha cargado");
                nueva.ShowDialog();

            }


        }



        public void EliminarActividadDidactica(Object parameter)
        {

            try
            {
                if (MessageBox.Show("¿Está seguro que desea eliminar los datos de la actividad seleccionada?", "Confirme su Decisión", MessageBoxButton.YesNo, MessageBoxImage.Warning) == MessageBoxResult.Yes)
                {

                    if (this.idSeleccionado != Guid.Empty)
                    {
                        this.view.lblActividadNoSelected.Visibility = Visibility.Collapsed;

                        ActividadDidactica entidad = new ActividadDidacticaLogica().ObtenerEntidadParaEditar(idSeleccionado);

                        entidad.Eliminada = true;
                        new ActividadDidacticaLogica().Modificar(entidad);
                        VentanaAviso nueva = new VentanaAviso(false, "Finalización exitosa", "La actividad didáctica seleccionada ha sido eliminado");
                        nueva.ShowDialog();
                        this.view.Close();
                    }
                }
                else
                {
                    this.view.lblActividadNoSelected.Visibility = Visibility.Visible;
                }
                
            }
            catch (Exception)
            {

                VentanaAviso nueva = new VentanaAviso(true, "Se ha producido un error", "  Ha ocurrido un error y la actividad didáctica no se ha cargado");
                nueva.ShowDialog();

            }


        }














    }
}
